﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Data.SqlClient;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Collections.Specialized;


namespace LANmine
{
    public partial class AddGames : Form
    {
        Database dbGames;
        SqlConnection dbConn;
        SqlDataAdapter daGames;
        DataSet dsGames;
        DataTable dtGames;

        Language lmLang;

     

        public AddGames(Language lmLang)
        {
            // Save language object
            this.lmLang = lmLang;

            InitializeComponent();
            ApplyLanguage();
            LoadGames();
        }



        #region Language Specifications
        /**
         * MainForm::ApplyLanguage()
         * ---------------------------
         * Overwrite all text properties of all elements in all forms with the right ones.
         */
        private void ApplyLanguage()
        {
            lblNaam.Text = this.lmLang.GetString("adminGame.lblNaam");
            lblShort.Text = this.lmLang.GetString("adminGame.lblShort");
            lblTeamGrootte.Text = this.lmLang.GetString("adminGame.lblTeamGrootte");

            btnNewGame.Text = this.lmLang.GetString("adminGame.btnNewGame");
            btnSaveNewGame.Text = this.lmLang.GetString("adminGame.btnSaveNewGame");
            btnSaveEdit.Text = this.lmLang.GetString("adminGame.btnSaveEdit");


        }
        #endregion


        private void LoadGames()
        {
            dbGames = new Database("rw");
            dbConn = dbGames.getDbConn();
            dbConn.Open();

            //Dataadapter --> liasion avec le database
            daGames = new SqlDataAdapter("Select * From games", dbConn);
            dbConn.Close();
            //Hier zijn de datatabels gestokeerd
            dsGames = new DataSet("games");

            daGames.FillSchema(dsGames, SchemaType.Source, "games");
            daGames.Fill(dsGames, "games");

            //tabel met gegevens van de database

            dtGames = dsGames.Tables["games"];

            foreach (DataRow drCurrent in dtGames.Rows)
            {
                lbxGames.Items.Add(drCurrent["naam"].ToString());
            }

            //om bij het openen van het form een geselecteerd item te hebben
            lbxGames.SelectedIndex = 0;
        }

        private void LoadGame()
        {
            txtNaam.Text = dtGames.Rows[lbxGames.SelectedIndex]["naam"].ToString();
            txtShort.Text = dtGames.Rows[lbxGames.SelectedIndex]["short"].ToString();
            txtTeamGrootte.Text = dtGames.Rows[lbxGames.SelectedIndex]["teamgrootte"].ToString();
        }

        private void UpdateGame()
        {
            dtGames.Rows[lbxGames.SelectedIndex]["naam"] = txtNaam.Text;
            dtGames.Rows[lbxGames.SelectedIndex]["short"] = txtShort.Text;
            dtGames.Rows[lbxGames.SelectedIndex]["teamgrootte"] = txtTeamGrootte.Text;
        }

        private void lbxGames_SelectedIndexChanged(object sender, EventArgs e)
        {
            LoadGame();
        }

        private void btnSaveEdit_Click_1(object sender, EventArgs e)
        {
            // Stuurt aangepaste gegevens naar de database
            UpdateGame();

            // Code komt van een internet forum het was de oplossing op mijn error van vorige code(begrijp nie precies wat deze doet)
            SqlCommandBuilder myBuilder = new SqlCommandBuilder(daGames);
            myBuilder.GetUpdateCommand();
            daGames.UpdateCommand = myBuilder.GetUpdateCommand();

            // Try dient om niet het programma te sluiten maar verder te kunnen werken
            try
            {
                daGames.Update(dtGames.GetChanges());
                MessageBox.Show(lmLang.GetString("adminGame.errY"));
            }
            catch (Exception)
            {
                MessageBox.Show(lmLang.GetString("adminGame.errN"));
            }
        }

        private void btnSaveNewGame_Click_1(object sender, EventArgs e)
        {
            dtGames.Rows.Add(null, txtNaam.Text, txtShort.Text, txtTeamGrootte.Text);


            //Code komt van een internet forum het was de oplossing op mijn error van vorige code(begrijp nie precies wat deze doet)
            SqlCommandBuilder myBuilder = new SqlCommandBuilder(daGames);
            myBuilder.GetUpdateCommand();
            daGames.UpdateCommand = myBuilder.GetUpdateCommand();

            try
            {
                daGames.Update(dtGames.GetChanges());
                MessageBox.Show(lmLang.GetString("adminGame.errY"));
            }
            catch (Exception)
            {
                MessageBox.Show(lmLang.GetString("adminGame.errN"));
            }
        }

        private void btnNewGame_Click_1(object sender, EventArgs e)
        {
            {
                //De listbox wordt hide en alle textboxen worden leeg gemaakt
                lbxGames.Visible = false;
                btnNewGame.Visible = false;
                btnSaveEdit.Visible = false;
                btnSaveNewGame.Visible = true;

                txtNaam.Text = "";
                txtShort.Text = "";
                txtTeamGrootte.Text = "";

            }
        }
    }
}